Usos de manejo de excepciones en clean code.
Conceptos clave:
Cuando devolvemos códigos de error nos estamos forzando a realizar una comprobación (bloque if) en el mismo punto de retorno de la función, si utilizamos excepciones podemos separar la lógica del código y el manejo de excepciones en dos sitios distintos
Si utilizamos unchecked exceptions (Runtime exceptions), nos permite hacer un código menos acoplado, ya que si usamos checked exceptions y definimos una excepción en una función que está muy anidada tendremos que definir un throws en todas las funciones que están por encima de esta hasta llegar al catch, por lo que se genera una violación del Open/Closed Principle.
Una buena práctica es la de encapsular varias excepciones en una sola expceción propia, por ejemplo cuando usamos una API de terceros, de está manera tenemos menos acoplamiento con la libería, ya que si en un futuro cambiasemos de librería solo tendríamos que cambiar el wrapper, ya que todo nuestros código funciona con nuestra propia excepción
Siempre hay que evitar el hecho de devolver Null en nuestras funciones, ya que esto nos genera mas trabajo y mas posibles fallos, ya que el hecho de devolver null nos genera la situación de tener que comprobar si la función ha retornado Null para controlar esa situación y en caso de que no controlemos esa situación podemos llegar a una situación en la que se lanzaría una expceción de NullPointerException
Al igual que no devolver null en una funcion, debemos evitar el echo de pasar null a una funcion, ya que nuevamente podemos generar NullPointerException.
NOTA: La excepción a esta regla es si estamos usando una API que requiere que le pasemos Null.
Clean Code | Expcetions | Error